package com.developer.platform.domain.repository;


import com.developer.platform.domain.Menu;
import com.developer.platform.infrastructure.enums.MenuEnum;
import com.developer.platform.infrastructure.enums.StatusEnum;
import java.util.List;

/**
 * 资源仓储接口
 *
 * @author ：qiaoliang
 * @date ：2020-10-16
 */
public interface IMenuRepository {

    /***
     *  通过用户ID获取用户可访问资源
     *
     * @author ：qiaoliang
     * @param userId :
     * @return com.veeker.admin.domain.User
     * @date 2020-10-16 16:27
     */
    List<Menu> findByUserId(long userId);


    /**
     *  通过类型，状态查询资源列表
     *
     * @author ：qiaoliang
     * @param status :  状态
     * @param type :  类型
     * @return java.util.List<com.veeker.admin.domain.Permission>
     * @date 2020-10-20 09:19
     */
    List<Menu> findByStatusType(StatusEnum status, MenuEnum type);


    /**
     *  查询子级个数
     *
     * @author ：qiaoliang
     * @param id :  资源ID
     * @return com.veeker.admin.domain.Permission
     * @date 2020-10-20 09:58
     */
    int parentCount(long id);

    /**
     *  新增资源信息
     *
     * @author ：qiaoliang
     * @param menu : 资源信息
     * @date 2020-10-20 09:42
     */
    void save(Menu menu);

    /**
     *  通过ID删除资源
     *
     * @author ：qiaoliang
     * @param id :  资源ID
     * @date 2020-10-20 09:58
     */
    void delete(long id);

    /**
     *  修改资源信息
     *
     * @author ：qiaoliang
     * @param menu : 资源信息
     * @date 2020-10-20 10:21
     */
    void updateById(Menu menu);

}
